The present invention relates to a method and apparatus for controlling a stepper motor and particularly, but not exclusively, for use with a computer disk drive unit of the kind disclosed in British Patent Application No. 8041323.
The present invention is realised in a programmable circuit which is particularly, but not exclusively, suitable for open-loop control of stepper motors.
The contents of this patent relate to the use of a microprocessor-based system for the control of various stepper motors in a disk file, particularly; minimisation of stepper motor oscillations for a single step, acceleration and deceleration of the stepper motor for multi-track seeks; and reduction of angular hysteresis due to the mechanical/magnetic properties of the stepper motor construction.
As is known in the art, the stepper motor in a computer disk drive unit is used as the actuator for radially positioning the read/write head over the tracks on the disk surface. Detente positions of the stepper motor correspond to track positions on the disk. The stepper motor rotates by a predetermined amount in response to a winding or windings being energised. When windings are energised in succession this corresponds to the supply of pulses of current to the motor. The control of the rate of pulses applied to the stepper motor enables control of the rotational speed of the stepper motor and hence the time taken for the head to move between tracks on the disk. Thus the speed of response of the stepper motor and consequently the time taken for the read/write head to move from one track to another is a function of the pulse rate applied to the stepper motor.
One proposed way of controlling pulses to the stepper motor 1 is carried out using a drive circuit 2 (FIG. 1) which produces pulses in response to instructions received from a system drive controller or "host" 3, which may be, for example, a computer, or terminal or the like. Movement of the arm 4 is controlled by the stepper motor 1. The drive circuit 2 comprises hard-wired discrete circuit components.
The speed at which the stepper motor may be driven in response to an applied pulse rate is partly a function of the inertia of the combination of the motor and the load consisting of, for example, the stainless steel belt, thermal compensation mechanism (British patent application No. 8041323 corresponding to copending U.S. application Ser. No. 332,003 filed 12/18/81) spindles, arm and the read/write head. The inertia and torque specification of the motor determine the maximum acceleration and maximum deceleration of the motor. In the simplest implementation for an idealised system, the motor receives pulses to move the read/write head from one track 5 to another track 6 on the disk as shown in FIG. 2, there is a finite time and hence finite distance 7 over which the motor accelerates to maximum speed or slew speed 8, the value of the slew speed being dependent on the load and specification and dynamic characteristics of the motor. The slew speed is then maintained until a distance equivalent to the acceleration ramp distance 7 from the desired track 6 is reached. However, due to the inertia of the drive system, and as the system is open-loop, the motor and consequently the read/write head overshoots the desired track 6. The motor and read/write head then oscillates in a generally undamped way about the track 6 until the read/write head is in the correct position (FIG. 3). This overshooting or `ringing` requires an additional finite time 9 for the read/write head to reach the correct position and this increases the access time for the read/write head to move from one track position to another on the disk. The issue of the step pulses may be implemented for example either by a discrete electronic circuit or by a microprocessor-based circuit. Although the use of the microprocessor gives certain advantages over discrete components, the `ringing` or oscillation feature is still present when moving between tracks and is particularly evident and undesirable on reaching the desired track. This is a disadvantage of such proposed stepper motor control systems.
The idealised situation depicted in FIG. 2 shows that the stepper motor is exactly at rest at track 6. Of course this does not occur in practice. It is possible to consider modifying the deceleration ramp i.e. the rate of issue of pulses to bring the motor to rest at track 6. However, even this does not occur in practice due to inertia of the drive system and overshooting still occurs. In addition, overshoots across the tracks can be accumulated such that the drive is not synchronised to the operation of the system and the `head` can lose its intended address.
Another way which has been proposed to control the overshooting is to use a technique called back-phase damping (BPD). In BPD, as the head is moved from the second last track to the last track, a pulse of the reverse phase is applied to the stepper motor to act as a braking mechanism and slow the speed of the motor and hence reduces the overshoot. The winding of the stepper motor corresponding to the last track is then energised to cause the stepper motor to move to the last track. This technique can be used with either the discrete component drive circuit or with the microprocessor controlled drive circuit. The time of starting and duration of the Back Phase Damping may vary with each winding of the stepper motor and may also vary between nominally similar stepper motors. Thus many different parameters need to be defined. However, the ringing or overshooting is often not satisfactorily reduced. In addition, rapidly pulsing the stepper motor to move in different directions on approaching an address causes a `jerky` action and may lead to impairment of the motor response. These are disadvantages of such a proposed overshoot compensation technique.
In addition, in known stepper motor systems the acceleration and deceleration parts of the speed profile are usually represented by a linear ramp (FIG. 2). However, the inertial characteristics of a particular design of disk drive depend on components such as weight, pre-load friction and machining tolerances as well as the type of stepper motor used and consequently the acceleration and deceleration parts of the speed profile may be any one of a variety of shapes 10a, 10b such as exponential, sigmoid etc. depending on the inertial characteristics of the particular drive unit design and the specification of the selected stepper motor (FIG. 4).
During control of the stepper motor drive it is essential to know the torque/speed characteristics of the motor exactly so that the pulse rate applied to the stepper motor is correctly modified to reduce the time taken to move between tracks. That is, the movement of the read/write head is optimised to reach the desired track in the minimum time. If the pulse rate from the control circuit is not matched to the particular toque/speed profile, then the speed of the motor may be too slow and consequently the access time is not minimised or, if the pulse rate is too high the motor may stall with loss of synchronisation. With hard-wired circuits composed of discrete components, it is relatively difficult to match the pulse rate closely to the motor torque/speed characteristic of a particular stepper motor. With a previously proposed microprocessor controlled drive circuit, the circuit is not suitable for use with motors having non-linear speed/time characteristics thus its usefullness is limited in practice as many motors have non-linear characteristics.
A further disadvantage of conventional stepper motor control systems is absence of method for satisfactorily removing angular errors associated with mechanical and magnetic hysteresis in the stepper motor. In a disk drive this can lead to positioning inaccuracy of the read/write head on the desired track when that track is approached from different directions. There are further disadvantages of such proposed stepper motor control circuits.